/**
 * 购物车服务使用示例
 * 展示如何使用CartService进行购物车相关操作
 */

const CartService = require('../services/cart');

// 示例：添加商品到购物车
async function addToCartExample() {
    console.log('=== 添加商品到购物车示例 ===');
    
    try {
        const result = await CartService.addToCart({
            goods_id: 123,
            spec: '红色@XL@棉质',
            quantity: 2,
            user_id: 789
        });
        
        if (result.success) {
            console.log('✅ 添加成功:', result.message);
            console.log('购物车记录ID:', result.data.cart_id);
        } else {
            console.log('❌ 添加失败:', result.message);
        }
    } catch (error) {
        console.error('❌ 操作异常:', error.message);
    }
}

// 示例：获取购物车列表
async function getCartListExample() {
    console.log('\n=== 获取购物车列表示例 ===');
    
    try {
        const result = await CartService.getCartList({
            user_id: 789
        });
        
        if (result.success) {
            console.log('✅ 获取成功:', result.message);
            console.log('购物车商品数量:', result.data.count);
            console.log('总商品数量:', result.data.total_quantity);
            console.log('总价格:', result.data.total_price);
            
            // 遍历购物车商品
            result.data.list.forEach((item, index) => {
                console.log(`\n商品 ${index + 1}:`);
                console.log(`  商品名称: ${item.goods_name}`);
                console.log(`  规格: ${item.sku_specs}`);
                console.log(`  数量: ${item.quantity}`);
                console.log(`  单价: ${item.sku_price || item.goods_price}`);
                console.log(`  小计: ${(item.sku_price || item.goods_price) * item.quantity}`);
            });
        } else {
            console.log('❌ 获取失败:', result.message);
        }
    } catch (error) {
        console.error('❌ 操作异常:', error.message);
    }
}

// 示例：更新商品数量
async function updateQuantityExample() {
    console.log('\n=== 更新商品数量示例 ===');
    
    try {
        const result = await CartService.updateQuantity({
            cart_id: 1,
            quantity: 3
        });
        
        if (result.success) {
            console.log('✅ 更新成功:', result.message);
        } else {
            console.log('❌ 更新失败:', result.message);
        }
    } catch (error) {
        console.error('❌ 操作异常:', error.message);
    }
}

// 示例：删除购物车商品
async function removeFromCartExample() {
    console.log('\n=== 删除购物车商品示例 ===');
    
    try {
        const result = await CartService.removeFromCart({
            cart_id: 1
        });
        
        if (result.success) {
            console.log('✅ 删除成功:', result.message);
        } else {
            console.log('❌ 删除失败:', result.message);
        }
    } catch (error) {
        console.error('❌ 操作异常:', error.message);
    }
}

// 示例：清空购物车
async function clearCartExample() {
    console.log('\n=== 清空购物车示例 ===');
    
    try {
        const result = await CartService.clearCart({
            user_id: 789
        });
        
        if (result.success) {
            console.log('✅ 清空成功:', result.message);
        } else {
            console.log('❌ 清空失败:', result.message);
        }
    } catch (error) {
        console.error('❌ 操作异常:', error.message);
    }
}

// 示例：获取购物车商品总数
async function getCartCountExample() {
    console.log('\n=== 获取购物车商品总数示例 ===');
    
    try {
        const result = await CartService.getCartCount({
            user_id: 789
        });
        
        if (result.success) {
            console.log('✅ 获取成功:', result.message);
            console.log('购物车商品总数:', result.data.count);
        } else {
            console.log('❌ 获取失败:', result.message);
        }
    } catch (error) {
        console.error('❌ 操作异常:', error.message);
    }
}

// 运行所有示例
async function runAllExamples() {
    console.log('🚀 开始运行购物车服务示例...\n');
    
    await addToCartExample();
    await getCartListExample();
    await updateQuantityExample();
    await removeFromCartExample();
    await clearCartExample();
    await getCartCountExample();
    
    console.log('\n✨ 所有示例运行完成！');
}

// 如果直接运行此文件，则执行示例
if (require.main === module) {
    runAllExamples().catch(console.error);
}

module.exports = {
    addToCartExample,
    getCartListExample,
    updateQuantityExample,
    removeFromCartExample,
    clearCartExample,
    getCartCountExample,
    runAllExamples
};
